#ifndef HILL_MESH
#define HILL_MESH

#include <OpenGL/OpenGL.h>
#include <OpenGL/glu.h>

/**
 *  Abstract class containing the definition of a Hill_Mesh,
 *  which provides a very thin base class for the definition of
 *  mesh classes to be used in this program
 */
class Hill_Mesh
{
protected:
	/** internal pointers to be sent to OpenGL */
	GLfloat* _vertices,
			 *_tex_coords;
	GLuint*  _indices;
	GLfloat* _normals;
	
	/** number of indices in the _indices array */
	int num_indices;
	
	/** setter methods to copy pointers */
	void setVertices(GLfloat *verts);
	void setIndices (GLuint  *ind, int);
	void setTexCoords(GLfloat* tex_coords);
	void setNormals(GLfloat* normal) { _normals = normal; }
public:
	/** pure virtual drawing function */
	virtual void draw() = 0;
};


#endif